package com.wjt.homestayms.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.wjt.homestayms.common.LoginResult;
import com.wjt.homestayms.pojo.User;
import com.wjt.homestayms.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
public class LoginController {


    @Autowired
    IUserService userService;

    /**
     * 访问登录页面。
     *
     * @return
     */

    //登陆页面控制器
    @GetMapping(value = {"/", "/login"})
    public String loginPage() {
        return "login";
    }

    @PostMapping("/login")
    @ResponseBody
    public LoginResult main(User user, HttpSession session, Model model) throws JsonProcessingException {

        LoginResult loginResult = new LoginResult();
        if (user != null) {
            //把数据库中user表所有数据全部取出，然后一一对比，是否有跟请求中的user对象相符的，相符则跳转到主页面。
            List<User> users = userService.queryAllUser();
            for (User temp : users) {
                if (temp.getUsername().equals(user.getUsername()) && temp.getPassword().equals(user.getPassword())) {
                    session.setAttribute("user", temp);

                    loginResult.setCode(200);
                    loginResult.setUrl("/main.html");
                    loginResult.setStatus(true);
                    loginResult.setUserId(temp.getId());
                    loginResult.setUserName(temp.getUsername());
                    return loginResult;
                }
            }

        }

        loginResult.setCode(500);
        loginResult.setStatus(false);
        loginResult.setMsg("账号或密码错误，请重试！");

        //登陆失败，返回登录页面。
        return loginResult;
    }

    @GetMapping("/main.html")
    public String mainPage() {
        return "main";
    }

    //注册页面控制器。
    @GetMapping("/register.html")
    public String registerPage() {
        return "register";
    }

    @PostMapping("/register")
    @ResponseBody
    public LoginResult register(User user) {

        LoginResult loginResult = new LoginResult();
        //只有当有数据传输，才进行判断，否则直接退回注册页面重新注册。
        if (user != null) {
            //往数据库添加数据。
            Integer msg = userService.addUser(user);
            //表示添加成功。
            if (msg == 1) {

                loginResult.setCode(200);
                loginResult.setUrl("/login");
                loginResult.setStatus(true);
                loginResult.setMsg("注册成功");

                return loginResult;
            }
        }

        loginResult.setCode(500);
        loginResult.setUrl("/register.html");
        loginResult.setStatus(false);
        loginResult.setMsg("注册失败，请重试");

        return loginResult;
    }

}
